package com.example.designpattern.creational.factory.factory_method;

import com.example.designpattern.creational.factory.common.product.fruit.Fruit;

public class User {
    // 为了解决简单工厂模式的这两个弊端，工厂方法模式应运而生，它规定每个产品都有一个专属工厂。
    // 比如苹果有专属的苹果工厂，梨子有专属的梨子工厂
    private void eat(){
        // 当构建过程相当复杂时，工厂将构建过程封装起来，调用者可以很方便的直接使用
        // 调用者无需知道苹果的生产细节，当生产过程需要修改时也无需更改调用端。
        AppleFactory appleFactory = new AppleFactory();
        Fruit apple = appleFactory.create();
        PearFactory pearFactory = new PearFactory();
        Fruit pear = pearFactory.create();
        apple.eat();
        pear.eat();
    }

    public static void main(String[] args) {
        User user = new User();
        user.eat();
    }
}